Find lucky integer in an array¶
Time: O(N); Space: O(N); easy
Given an array of integers arr, a lucky integer is an integer which has a frequency in the array equal to its value.
Return a lucky integer in the array. If there are multiple lucky integers return the largest of them. If there is no lucky integer return -1.
Example 1:
Input: arr = [2,2,3,4]
Output: 2
Explanation:
The only lucky number in the array is 2 because frequency[2] == 2.
Example 2:
Input: arr = [1,2,2,3,3,3]
Output: 3
Explanation:
2 and 3 are all lucky numbers, return the largest of them.
Example 3:
Input: arr = [2,2,2,3,3]
Output: -1
Explanation:
There are no lucky numbers in the array.
Example 4:
Input: arr = [5]
Output: -1
Example 5:
Input: arr = [7,7,7,7,7,7,7]
Output: 7
Notes:
1 <= len(arr) <= 500
1 <= arr[i] <= 500
[ ]:
Hints:
Count the frequency of each integer in the array.
Get all lucky numbers and return the largest of them.
[3]:
import collections
class Solution1(object):
def findLucky(self, arr):
"""
:type arr: List[int]
:rtype: int
"""
count = collections.Counter(arr)
result = -1
for k, v in count.items():
if k == v:
result = max(result, k)
return result
[4]:
s = Solution1()
arr = [2,2,3,4]
assert s.findLucky(arr) == 2
arr = [1,2,2,3,3,3]
assert s.findLucky(arr) == 3
arr = [2,2,2,3,3]
assert s.findLucky(arr) == -1
arr = [5]
assert s.findLucky(arr) == -1
arr = [7,7,7,7,7,7,7]
assert s.findLucky(arr) == 7